package execution;

import ihm.Resultats;

import java.io.File;
import java.util.Vector;

/**
 * 
 * Permet le reformatage des observations
 *
 */
public class FormatageObservation {
	
	private Vector<Observation> vecteurObservation;
	private Resultats resultats;
	
	/**
	 * Constructeur
	 * @param vecteurObservation
	 * @param resultats
	 */
	public FormatageObservation(Vector<Observation> vecteurObservation, Resultats resultats){
		this.vecteurObservation = vecteurObservation;
		this.resultats = resultats;
	}

	/**
	 * mise en forme des observation finales pour une campgane de tests
	 */
	public void miseEnForme()
	{
		resultats.getTextArea().append("------ Observations finales pour la campgne :\n\n");
		for (int i = 0 ; i < vecteurObservation.size(); i++){

			resultats.getTextArea()
			.append("------ Observations finales pour le cas : "+vecteurObservation.get(i)
					.getCasDeTest().getIdCas()+"\n\n");

			// affichage dans le cas où l'utilisateur demande de récupérer les observations Ocarina
			if(vecteurObservation.get(i).getCasDeTest().isRecuperationOcarina()){
				resultats.getTextArea().append("Observations au niveau Ocarina : \n");

				if(vecteurObservation.get(i).getErreurOcarina().size() == 0){
					resultats.getTextArea().append("Pas d'erreurs observées au niveau Ocarina\n\n");

				}
				else
				{
					for (int j=0; j < vecteurObservation.get(i).getErreurOcarina().size();j++){
						resultats.getTextArea()
						.append(vecteurObservation.get(i).getErreurOcarina().get(j)+"\n");
					}
					resultats.getTextArea().append("\n");

				}
			}

			// affichage dans le cas où l'utilisateur demande de récupérer les observations GCC
			if(vecteurObservation.get(i).getCasDeTest().isRecuperationGCC()){
				resultats.getTextArea().append("Observations au niveau GCC : \n");

				if(vecteurObservation.get(i).getErreurGCC().size() == 0){
					resultats.getTextArea().append("Pas d'erreurs observées au niveau GCC \n\n");

				}
				else
				{
					for (int j=0; j < vecteurObservation.get(i).getErreurGCC().size();j++){
						resultats.getTextArea()
						.append(vecteurObservation.get(i).getErreurGCC().get(j)+"\n");
					}
					resultats.getTextArea().append("\n");
				}
			}
			// affichage dans le cas où l'utilisateur demande de récupérer les observations LD            
			if(vecteurObservation.get(i).getCasDeTest().isRecuperationLD()){


				if(vecteurObservation.get(i).getErreurLD().size() == 0){
					resultats.getTextArea().append("Pas d'erreurs observées au niveau LD \n\n");

				}
				else
				{
					for (int j=0; j <vecteurObservation.get(i).getErreurLD().size();j++){
						resultats.getTextArea()
						.append(vecteurObservation.get(i).getErreurLD().get(j)+"\n");
					}
					resultats.getTextArea().append("\n");
				}
			}				

			// affichage dans le cas où l'utilisateur demande d'observer une variable
			if(vecteurObservation.get(i).getCasDeTest().isObserverVariable())
			{  
				if (vecteurObservation.get(i).getValeurObserve() != null){
					resultats.getTextArea().append("Variable observée : \n");
					resultats.getTextArea()
					.append(vecteurObservation.get(i).getCasDeTest()
							.getNomVariable()+ " = " + vecteurObservation.get(i).getValeurObserve() +"\n\n");
				}
				else{
					resultats.getTextArea()
					.append("Echec de l'observation de la variable: "+vecteurObservation.get(i).
							getCasDeTest().getNomVariable()+" \n\n");
				}


			}


		}




	}
}
